as.Date("2022-08-22")
[1] "2022-08-22"

POSIX - Start at 1970-01-01 00:00:00

date_time1 <- as.POSIXct("2020-01-01 00:00:00")
date_time1
[1] "2020-01-01 GMT"
unclass(date_time1)
[1] 1577836800
attr(,"tzone")
[1] ""

This returns the number of seconds that have passed between 1970-01-01 [(38 * 365) + (12 * 366)] * 24 * 60 * 60 = 1577836800

date_time2 <- as.POSIXlt("2020-01-01 00:00:00")
date_time2
[1] "2020-01-01 GMT"
unclass(date_time2)
$sec
[1] 0

$min
[1] 0

$hour
[1] 0

$mday
[1] 1

$mon
[1] 0

$year
[1] 120

$wday
[1] 3

$yday
[1] 0

$isdst
[1] 0

$zone
[1] "GMT"

$gmtoff
[1] NA
library(tidyverse)
Registered S3 methods overwritten by 'dbplyr':
  method         from
  print.tbl_lazy     
  print.tbl_sql      
── Attaching packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse 1.3.1 ──
✔ ggplot2 3.3.6     ✔ purrr   0.3.4
✔ tibble  3.1.7     ✔ dplyr   1.0.9
✔ tidyr   1.2.0     ✔ stringr 1.4.0
✔ readr   2.1.2     ✔ forcats 0.5.1
── Conflicts ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
library(lubridate)

Attaching package: ‘lubridate’

The following objects are masked from ‘package:base’:

    date, intersect, setdiff, union
netflix <- read_csv("data/netflix.csv")
Rows: 7787 Columns: 12
── Column specification ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Delimiter: ","
chr (11): show_id, type, title, director, cast, country, date_added, rating, duration, listed_in, description
dbl  (1): release_year

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
ymd_h("2019-01-19 10")
[1] "2019-01-19 10:00:00 UTC"
netflix <- netflix %>% 
  mutate(date_added = mdy(date_added))

netflix

Extracting components

Calculating time spans

Difftime: a datetime object that represents days Period: represent a timespan e.g. week/month/day Duration: represent an exact number of seconds

Subtracting periods from dates

netflix <- netflix %>% 
  mutate(time_duration = as.duration(today() - date_added))

netflix %>% 
  select(starts_with("time_"))

Understanding timezones

OlsonNames()
  [1] "Africa/Abidjan"                   "Africa/Accra"                     "Africa/Addis_Ababa"              
  [4] "Africa/Algiers"                   "Africa/Asmara"                    "Africa/Asmera"                   
  [7] "Africa/Bamako"                    "Africa/Bangui"                    "Africa/Banjul"                   
 [10] "Africa/Bissau"                    "Africa/Blantyre"                  "Africa/Brazzaville"              
 [13] "Africa/Bujumbura"                 "Africa/Cairo"                     "Africa/Casablanca"               
 [16] "Africa/Ceuta"                     "Africa/Conakry"                   "Africa/Dakar"                    
 [19] "Africa/Dar_es_Salaam"             "Africa/Djibouti"                  "Africa/Douala"                   
 [22] "Africa/El_Aaiun"                  "Africa/Freetown"                  "Africa/Gaborone"                 
 [25] "Africa/Harare"                    "Africa/Johannesburg"              "Africa/Juba"                     
 [28] "Africa/Kampala"                   "Africa/Khartoum"                  "Africa/Kigali"                   
 [31] "Africa/Kinshasa"                  "Africa/Lagos"                     "Africa/Libreville"               
 [34] "Africa/Lome"                      "Africa/Luanda"                    "Africa/Lubumbashi"               
 [37] "Africa/Lusaka"                    "Africa/Malabo"                    "Africa/Maputo"                   
 [40] "Africa/Maseru"                    "Africa/Mbabane"                   "Africa/Mogadishu"                
 [43] "Africa/Monrovia"                  "Africa/Nairobi"                   "Africa/Ndjamena"                 
 [46] "Africa/Niamey"                    "Africa/Nouakchott"                "Africa/Ouagadougou"              
 [49] "Africa/Porto-Novo"                "Africa/Sao_Tome"                  "Africa/Timbuktu"                 
 [52] "Africa/Tripoli"                   "Africa/Tunis"                     "Africa/Windhoek"                 
 [55] "America/Adak"                     "America/Anchorage"                "America/Anguilla"                
 [58] "America/Antigua"                  "America/Araguaina"                "America/Argentina/Buenos_Aires"  
 [61] "America/Argentina/Catamarca"      "America/Argentina/ComodRivadavia" "America/Argentina/Cordoba"       
 [64] "America/Argentina/Jujuy"          "America/Argentina/La_Rioja"       "America/Argentina/Mendoza"       
 [67] "America/Argentina/Rio_Gallegos"   "America/Argentina/Salta"          "America/Argentina/San_Juan"      
 [70] "America/Argentina/San_Luis"       "America/Argentina/Tucuman"        "America/Argentina/Ushuaia"       
 [73] "America/Aruba"                    "America/Asuncion"                 "America/Atikokan"                
 [76] "America/Atka"                     "America/Bahia"                    "America/Bahia_Banderas"          
 [79] "America/Barbados"                 "America/Belem"                    "America/Belize"                  
 [82] "America/Blanc-Sablon"             "America/Boa_Vista"                "America/Bogota"                  
 [85] "America/Boise"                    "America/Buenos_Aires"             "America/Cambridge_Bay"           
 [88] "America/Campo_Grande"             "America/Cancun"                   "America/Caracas"                 
 [91] "America/Catamarca"                "America/Cayenne"                  "America/Cayman"                  
 [94] "America/Chicago"                  "America/Chihuahua"                "America/Coral_Harbour"           
 [97] "America/Cordoba"                  "America/Costa_Rica"               "America/Creston"                 
[100] "America/Cuiaba"                   "America/Curacao"                  "America/Danmarkshavn"            
[103] "America/Dawson"                   "America/Dawson_Creek"             "America/Denver"                  
[106] "America/Detroit"                  "America/Dominica"                 "America/Edmonton"                
[109] "America/Eirunepe"                 "America/El_Salvador"              "America/Ensenada"                
[112] "America/Fort_Nelson"              "America/Fort_Wayne"               "America/Fortaleza"               
[115] "America/Glace_Bay"                "America/Godthab"                  "America/Goose_Bay"               
[118] "America/Grand_Turk"               "America/Grenada"                  "America/Guadeloupe"              
[121] "America/Guatemala"                "America/Guayaquil"                "America/Guyana"                  
[124] "America/Halifax"                  "America/Havana"                   "America/Hermosillo"              
[127] "America/Indiana/Indianapolis"     "America/Indiana/Knox"             "America/Indiana/Marengo"         
[130] "America/Indiana/Petersburg"       "America/Indiana/Tell_City"        "America/Indiana/Vevay"           
[133] "America/Indiana/Vincennes"        "America/Indiana/Winamac"          "America/Indianapolis"            
[136] "America/Inuvik"                   "America/Iqaluit"                  "America/Jamaica"                 
[139] "America/Jujuy"                    "America/Juneau"                   "America/Kentucky/Louisville"     
[142] "America/Kentucky/Monticello"      "America/Knox_IN"                  "America/Kralendijk"              
[145] "America/La_Paz"                   "America/Lima"                     "America/Los_Angeles"             
[148] "America/Louisville"               "America/Lower_Princes"            "America/Maceio"                  
[151] "America/Managua"                  "America/Manaus"                   "America/Marigot"                 
[154] "America/Martinique"               "America/Matamoros"                "America/Mazatlan"                
[157] "America/Mendoza"                  "America/Menominee"                "America/Merida"                  
[160] "America/Metlakatla"               "America/Mexico_City"              "America/Miquelon"                
[163] "America/Moncton"                  "America/Monterrey"                "America/Montevideo"              
[166] "America/Montreal"                 "America/Montserrat"               "America/Nassau"                  
[169] "America/New_York"                 "America/Nipigon"                  "America/Nome"                    
[172] "America/Noronha"                  "America/North_Dakota/Beulah"      "America/North_Dakota/Center"     
[175] "America/North_Dakota/New_Salem"   "America/Nuuk"                     "America/Ojinaga"                 
[178] "America/Panama"                   "America/Pangnirtung"              "America/Paramaribo"              
[181] "America/Phoenix"                  "America/Port_of_Spain"            "America/Port-au-Prince"          
[184] "America/Porto_Acre"               "America/Porto_Velho"              "America/Puerto_Rico"             
[187] "America/Punta_Arenas"             "America/Rainy_River"              "America/Rankin_Inlet"            
[190] "America/Recife"                   "America/Regina"                   "America/Resolute"                
[193] "America/Rio_Branco"               "America/Rosario"                  "America/Santa_Isabel"            
[196] "America/Santarem"                 "America/Santiago"                 "America/Santo_Domingo"           
[199] "America/Sao_Paulo"                "America/Scoresbysund"             "America/Shiprock"                
[202] "America/Sitka"                    "America/St_Barthelemy"            "America/St_Johns"                
[205] "America/St_Kitts"                 "America/St_Lucia"                 "America/St_Thomas"               
[208] "America/St_Vincent"               "America/Swift_Current"            "America/Tegucigalpa"             
[211] "America/Thule"                    "America/Thunder_Bay"              "America/Tijuana"                 
[214] "America/Toronto"                  "America/Tortola"                  "America/Vancouver"               
[217] "America/Virgin"                   "America/Whitehorse"               "America/Winnipeg"                
[220] "America/Yakutat"                  "America/Yellowknife"              "Antarctica/Casey"                
[223] "Antarctica/Davis"                 "Antarctica/DumontDUrville"        "Antarctica/Macquarie"            
[226] "Antarctica/Mawson"                "Antarctica/McMurdo"               "Antarctica/Palmer"               
[229] "Antarctica/Rothera"               "Antarctica/South_Pole"            "Antarctica/Syowa"                
[232] "Antarctica/Troll"                 "Antarctica/Vostok"                "Arctic/Longyearbyen"             
[235] "Asia/Aden"                        "Asia/Almaty"                      "Asia/Amman"                      
[238] "Asia/Anadyr"                      "Asia/Aqtau"                       "Asia/Aqtobe"                     
[241] "Asia/Ashgabat"                    "Asia/Ashkhabad"                   "Asia/Atyrau"                     
[244] "Asia/Baghdad"                     "Asia/Bahrain"                     "Asia/Baku"                       
[247] "Asia/Bangkok"                     "Asia/Barnaul"                     "Asia/Beirut"                     
[250] "Asia/Bishkek"                     "Asia/Brunei"                      "Asia/Calcutta"                   
[253] "Asia/Chita"                       "Asia/Choibalsan"                  "Asia/Chongqing"                  
[256] "Asia/Chungking"                   "Asia/Colombo"                     "Asia/Dacca"                      
[259] "Asia/Damascus"                    "Asia/Dhaka"                       "Asia/Dili"                       
[262] "Asia/Dubai"                       "Asia/Dushanbe"                    "Asia/Famagusta"                  
[265] "Asia/Gaza"                        "Asia/Harbin"                      "Asia/Hebron"                     
[268] "Asia/Ho_Chi_Minh"                 "Asia/Hong_Kong"                   "Asia/Hovd"                       
[271] "Asia/Irkutsk"                     "Asia/Istanbul"                    "Asia/Jakarta"                    
[274] "Asia/Jayapura"                    "Asia/Jerusalem"                   "Asia/Kabul"                      
[277] "Asia/Kamchatka"                   "Asia/Karachi"                     "Asia/Kashgar"                    
[280] "Asia/Kathmandu"                   "Asia/Katmandu"                    "Asia/Khandyga"                   
[283] "Asia/Kolkata"                     "Asia/Krasnoyarsk"                 "Asia/Kuala_Lumpur"               
[286] "Asia/Kuching"                     "Asia/Kuwait"                      "Asia/Macao"                      
[289] "Asia/Macau"                       "Asia/Magadan"                     "Asia/Makassar"                   
[292] "Asia/Manila"                      "Asia/Muscat"                      "Asia/Nicosia"                    
[295] "Asia/Novokuznetsk"                "Asia/Novosibirsk"                 "Asia/Omsk"                       
[298] "Asia/Oral"                        "Asia/Phnom_Penh"                  "Asia/Pontianak"                  
[301] "Asia/Pyongyang"                   "Asia/Qatar"                       "Asia/Qostanay"                   
[304] "Asia/Qyzylorda"                   "Asia/Rangoon"                     "Asia/Riyadh"                     
[307] "Asia/Saigon"                      "Asia/Sakhalin"                    "Asia/Samarkand"                  
[310] "Asia/Seoul"                       "Asia/Shanghai"                    "Asia/Singapore"                  
[313] "Asia/Srednekolymsk"               "Asia/Taipei"                      "Asia/Tashkent"                   
[316] "Asia/Tbilisi"                     "Asia/Tehran"                      "Asia/Tel_Aviv"                   
[319] "Asia/Thimbu"                      "Asia/Thimphu"                     "Asia/Tokyo"                      
[322] "Asia/Tomsk"                       "Asia/Ujung_Pandang"               "Asia/Ulaanbaatar"                
[325] "Asia/Ulan_Bator"                  "Asia/Urumqi"                      "Asia/Ust-Nera"                   
[328] "Asia/Vientiane"                   "Asia/Vladivostok"                 "Asia/Yakutsk"                    
[331] "Asia/Yangon"                      "Asia/Yekaterinburg"               "Asia/Yerevan"                    
[334] "Atlantic/Azores"                  "Atlantic/Bermuda"                 "Atlantic/Canary"                 
[337] "Atlantic/Cape_Verde"              "Atlantic/Faeroe"                  "Atlantic/Faroe"                  
[340] "Atlantic/Jan_Mayen"               "Atlantic/Madeira"                 "Atlantic/Reykjavik"              
[343] "Atlantic/South_Georgia"           "Atlantic/St_Helena"               "Atlantic/Stanley"                
[346] "Australia/ACT"                    "Australia/Adelaide"               "Australia/Brisbane"              
[349] "Australia/Broken_Hill"            "Australia/Canberra"               "Australia/Currie"                
[352] "Australia/Darwin"                 "Australia/Eucla"                  "Australia/Hobart"                
[355] "Australia/LHI"                    "Australia/Lindeman"               "Australia/Lord_Howe"             
[358] "Australia/Melbourne"              "Australia/North"                  "Australia/NSW"                   
[361] "Australia/Perth"                  "Australia/Queensland"             "Australia/South"                 
[364] "Australia/Sydney"                 "Australia/Tasmania"               "Australia/Victoria"              
[367] "Australia/West"                   "Australia/Yancowinna"             "Brazil/Acre"                     
[370] "Brazil/DeNoronha"                 "Brazil/East"                      "Brazil/West"                     
[373] "Canada/Atlantic"                  "Canada/Central"                   "Canada/Eastern"                  
[376] "Canada/Mountain"                  "Canada/Newfoundland"              "Canada/Pacific"                  
[379] "Canada/Saskatchewan"              "Canada/Yukon"                     "CET"                             
[382] "Chile/Continental"                "Chile/EasterIsland"               "CST6CDT"                         
[385] "Cuba"                             "EET"                              "Egypt"                           
[388] "Eire"                             "EST"                              "EST5EDT"                         
[391] "Etc/GMT"                          "Etc/GMT-0"                        "Etc/GMT-1"                       
[394] "Etc/GMT-10"                       "Etc/GMT-11"                       "Etc/GMT-12"                      
[397] "Etc/GMT-13"                       "Etc/GMT-14"                       "Etc/GMT-2"                       
[400] "Etc/GMT-3"                        "Etc/GMT-4"                        "Etc/GMT-5"                       
[403] "Etc/GMT-6"                        "Etc/GMT-7"                        "Etc/GMT-8"                       
[406] "Etc/GMT-9"                        "Etc/GMT+0"                        "Etc/GMT+1"                       
[409] "Etc/GMT+10"                       "Etc/GMT+11"                       "Etc/GMT+12"                      
[412] "Etc/GMT+2"                        "Etc/GMT+3"                        "Etc/GMT+4"                       
[415] "Etc/GMT+5"                        "Etc/GMT+6"                        "Etc/GMT+7"                       
[418] "Etc/GMT+8"                        "Etc/GMT+9"                        "Etc/GMT0"                        
[421] "Etc/Greenwich"                    "Etc/UCT"                          "Etc/Universal"                   
[424] "Etc/UTC"                          "Etc/Zulu"                         "Europe/Amsterdam"                
[427] "Europe/Andorra"                   "Europe/Astrakhan"                 "Europe/Athens"                   
[430] "Europe/Belfast"                   "Europe/Belgrade"                  "Europe/Berlin"                   
[433] "Europe/Bratislava"                "Europe/Brussels"                  "Europe/Bucharest"                
[436] "Europe/Budapest"                  "Europe/Busingen"                  "Europe/Chisinau"                 
[439] "Europe/Copenhagen"                "Europe/Dublin"                    "Europe/Gibraltar"                
[442] "Europe/Guernsey"                  "Europe/Helsinki"                  "Europe/Isle_of_Man"              
[445] "Europe/Istanbul"                  "Europe/Jersey"                    "Europe/Kaliningrad"              
[448] "Europe/Kiev"                      "Europe/Kirov"                     "Europe/Lisbon"                   
[451] "Europe/Ljubljana"                 "Europe/London"                    "Europe/Luxembourg"               
[454] "Europe/Madrid"                    "Europe/Malta"                     "Europe/Mariehamn"                
[457] "Europe/Minsk"                     "Europe/Monaco"                    "Europe/Moscow"                   
[460] "Europe/Nicosia"                   "Europe/Oslo"                      "Europe/Paris"                    
[463] "Europe/Podgorica"                 "Europe/Prague"                    "Europe/Riga"                     
[466] "Europe/Rome"                      "Europe/Samara"                    "Europe/San_Marino"               
[469] "Europe/Sarajevo"                  "Europe/Saratov"                   "Europe/Simferopol"               
[472] "Europe/Skopje"                    "Europe/Sofia"                     "Europe/Stockholm"                
[475] "Europe/Tallinn"                   "Europe/Tirane"                    "Europe/Tiraspol"                 
[478] "Europe/Ulyanovsk"                 "Europe/Uzhgorod"                  "Europe/Vaduz"                    
[481] "Europe/Vatican"                   "Europe/Vienna"                    "Europe/Vilnius"                  
[484] "Europe/Volgograd"                 "Europe/Warsaw"                    "Europe/Zagreb"                   
[487] "Europe/Zaporozhye"                "Europe/Zurich"                    "Factory"                         
[490] "GB"                               "GB-Eire"                          "GMT"                             
[493] "GMT-0"                            "GMT+0"                            "GMT0"                            
[496] "Greenwich"                        "Hongkong"                         "HST"                             
[499] "Iceland"                          "Indian/Antananarivo"              "Indian/Chagos"                   
[502] "Indian/Christmas"                 "Indian/Cocos"                     "Indian/Comoro"                   
[505] "Indian/Kerguelen"                 "Indian/Mahe"                      "Indian/Maldives"                 
[508] "Indian/Mauritius"                 "Indian/Mayotte"                   "Indian/Reunion"                  
[511] "Iran"                             "Israel"                           "Jamaica"                         
[514] "Japan"                            "Kwajalein"                        "Libya"                           
[517] "MET"                              "Mexico/BajaNorte"                 "Mexico/BajaSur"                  
[520] "Mexico/General"                   "MST"                              "MST7MDT"                         
[523] "Navajo"                           "NZ"                               "NZ-CHAT"                         
[526] "Pacific/Apia"                     "Pacific/Auckland"                 "Pacific/Bougainville"            
[529] "Pacific/Chatham"                  "Pacific/Chuuk"                    "Pacific/Easter"                  
[532] "Pacific/Efate"                    "Pacific/Enderbury"                "Pacific/Fakaofo"                 
[535] "Pacific/Fiji"                     "Pacific/Funafuti"                 "Pacific/Galapagos"               
[538] "Pacific/Gambier"                  "Pacific/Guadalcanal"              "Pacific/Guam"                    
[541] "Pacific/Honolulu"                 "Pacific/Johnston"                 "Pacific/Kiritimati"              
[544] "Pacific/Kosrae"                   "Pacific/Kwajalein"                "Pacific/Majuro"                  
[547] "Pacific/Marquesas"                "Pacific/Midway"                   "Pacific/Nauru"                   
[550] "Pacific/Niue"                     "Pacific/Norfolk"                  "Pacific/Noumea"                  
[553] "Pacific/Pago_Pago"                "Pacific/Palau"                    "Pacific/Pitcairn"                
[556] "Pacific/Pohnpei"                  "Pacific/Ponape"                   "Pacific/Port_Moresby"            
[559] "Pacific/Rarotonga"                "Pacific/Saipan"                   "Pacific/Samoa"                   
[562] "Pacific/Tahiti"                   "Pacific/Tarawa"                   "Pacific/Tongatapu"               
[565] "Pacific/Truk"                     "Pacific/Wake"                     "Pacific/Wallis"                  
[568] "Pacific/Yap"                      "Poland"                           "Portugal"                        
[571] "PRC"                              "PST8PDT"                          "ROC"                             
[574] "ROK"                              "Singapore"                        "Turkey"                          
[577] "UCT"                              "Universal"                        "US/Alaska"                       
[580] "US/Aleutian"                      "US/Arizona"                       "US/Central"                      
[583] "US/East-Indiana"                  "US/Eastern"                       "US/Hawaii"                       
[586] "US/Indiana-Starke"                "US/Michigan"                      "US/Mountain"                     
[589] "US/Pacific"                       "US/Samoa"                         "UTC"                             
[592] "W-SU"                             "WET"                              "Zulu"                            
attr(,"Version")
[1] "2021a"
ymd_hms("2023-09-13 10:22:01", tz = "Atlantic/Faeroe")
[1] "2023-09-13 10:22:01 WEST"
netflix %>% 
  mutate(date_tz_1 = force_tz(date_added, tzone = "Asia/Singapore"),
         date_tz_2 = with_tz(date_added, tzone = "Asia/Singapore")) %>% 
  select(date_added, date_tz_1, date_tz_2)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCmBgYHtyfQphcy5EYXRlKCIyMDIyLTA4LTIyIikKYGBgCgoKUE9TSVggLSBTdGFydCBhdCAxOTcwLTAxLTAxIDAwOjAwOjAwCgpgYGB7cn0KZGF0ZV90aW1lMSA8LSBhcy5QT1NJWGN0KCIyMDIwLTAxLTAxIDAwOjAwOjAwIikKZGF0ZV90aW1lMQpgYGAKCgpgYGB7cn0KdW5jbGFzcyhkYXRlX3RpbWUxKQpgYGAKVGhpcyByZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0aGF0IGhhdmUgcGFzc2VkIGJldHdlZW4gMTk3MC0wMS0wMQpbKDM4ICogMzY1KSArICgxMiAqIDM2NildICogMjQgKiA2MCAqIDYwID0gMTU3NzgzNjgwMAoKCmBgYHtyfQpkYXRlX3RpbWUyIDwtIGFzLlBPU0lYbHQoIjIwMjAtMDEtMDEgMDA6MDA6MDAiKQpkYXRlX3RpbWUyCmBgYAoKCmBgYHtyfQp1bmNsYXNzKGRhdGVfdGltZTIpCmBgYAoKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsdWJyaWRhdGUpCmBgYAoKCmBgYHtyfQpuZXRmbGl4IDwtIHJlYWRfY3N2KCJkYXRhL25ldGZsaXguY3N2IikKYGBgCgoKYGBge3J9CnltZCgiMjAxOS0wMS0xOSIpCgptZHkoIkphbnVhcnkgMTl0aCwgMjAxOSIpCgpkbXkoIjE5LUphbi0yMDE5IikKCnltZF9obXMoIjIwMTktMDEtMTkgMTA6MDg6MjYiKQoKeW1kX2htKCIyMDE5LTAxLTE5IDEwOjA4IikKCnltZF9oKCIyMDE5LTAxLTE5IDEwIikKYGBgCgoKYGBge3J9Cm5ldGZsaXggPC0gbmV0ZmxpeCAlPiUgCiAgbXV0YXRlKGRhdGVfYWRkZWQgPSBtZHkoZGF0ZV9hZGRlZCkpCgpuZXRmbGl4CmBgYAoKCiMjIEV4dHJhY3RpbmcgY29tcG9uZW50cwoKYGBge3J9Cm5ldGZsaXggPC0gbmV0ZmxpeCAlPiUgCiAgbXV0YXRlKGRheSA9IGRheShkYXRlX2FkZGVkKSwKICAgICAgICAgbW9udGggPSBtb250aChkYXRlX2FkZGVkLCBsYWJlbCA9IFRSVUUsIGFiYnIgPSBGQUxTRSksCiAgICAgICAgIHllYXIgPSB5ZWFyKGRhdGVfYWRkZWQpLAogICAgICAgICB3ZWVrX2RheSA9IHdkYXkoZGF0ZV9hZGRlZCwgbGFiZWwgPSBUUlVFLCBhYmJyID0gVFJVRSksCiAgICAgICAgIC5hZnRlciA9IGRhdGVfYWRkZWQpCmBgYAoKCiMjIENhbGN1bGF0aW5nIHRpbWUgc3BhbnMKCmBEaWZmdGltZWA6IGEgX2RhdGV0aW1lXyBvYmplY3QgdGhhdCByZXByZXNlbnRzIGRheXMKYFBlcmlvZGA6IHJlcHJlc2VudCBhIHRpbWVzcGFuIGUuZy4gd2Vlay9tb250aC9kYXkKYER1cmF0aW9uYDogcmVwcmVzZW50IGFuIGV4YWN0IG51bWJlciBvZiBfc2Vjb25kc18KCmBgYHtyfQpuZXRmbGl4IDwtIG5ldGZsaXggJT4lIAogIG11dGF0ZSh0aW1lX3BlcmlvZCA9IGFzLnBlcmlvZCh0b2RheSgpIC0gZGF0ZV9hZGRlZCksCiAgICAgICAgIHRpbWVfeWVhcnMgPSBhcy5udW1lcmljKHRpbWVfcGVyaW9kLCAieWVhcnMiKSwKICAgICAgICAgdGltZV9ob3VycyA9IGFzLm51bWVyaWModGltZV9wZXJpb2QsICJob3VycyIpLAogICAgICAgICB0aW1lX21pbnV0ZXMgPSBhcy5udW1lcmljKHRpbWVfcGVyaW9kLCAibWludXRlcyIpLAogICAgICAgICB0aW1lX3NlY29uZHMgPSBhcy5udW1lcmljKHRpbWVfcGVyaW9kLCAic2Vjb25kcyIpLAogICAgICAgICAuYWZ0ZXIgPSB5ZWFyKQpgYGAKCgojIyBTdWJ0cmFjdGluZyBwZXJpb2RzIGZyb20gZGF0ZXMKCmBgYHtyfQpuZXRmbGl4IDwtIG5ldGZsaXggJT4lIAogIG11dGF0ZShwcm9tb19kYXRlID0gZGF0ZV9hZGRlZCAtIHdlZWtzKDIpLAogICAgICAgICByZW1vdmFsX2RhdGUgPSBkYXRlX2FkZGVkICsgbW9udGhzKDQpLAogICAgICAgICAuYWZ0ZXIgPSBkYXRlX2FkZGVkKQpgYGAKCgpgYGB7cn0KbmV0ZmxpeCA8LSBuZXRmbGl4ICU+JSAKICBtdXRhdGUodGltZV9kdXJhdGlvbiA9IGFzLmR1cmF0aW9uKHRvZGF5KCkgLSBkYXRlX2FkZGVkKSkKCm5ldGZsaXggJT4lIAogIHNlbGVjdChzdGFydHNfd2l0aCgidGltZV8iKSkKYGBgCgoKIyMgVW5kZXJzdGFuZGluZyB0aW1lem9uZXMKCmBgYHtyfQpPbHNvbk5hbWVzKCkKYGBgCgoKYGBge3J9Ck9sc29uTmFtZXMoKQp5bWRfaG1zKCIyMDIzLTA5LTEzIDEwOjIyOjAxIiwgdHogPSAiQXRsYW50aWMvRmFlcm9lIikKYGBgCgoKYGBge3J9Cm5ldGZsaXggJT4lIAogIG11dGF0ZShkYXRlX3R6XzEgPSBmb3JjZV90eihkYXRlX2FkZGVkLCB0em9uZSA9ICJBc2lhL1NpbmdhcG9yZSIpLAogICAgICAgICBkYXRlX3R6XzIgPSB3aXRoX3R6KGRhdGVfYWRkZWQsIHR6b25lID0gIkFzaWEvU2luZ2Fwb3JlIikpICU+JSAKICBzZWxlY3QoZGF0ZV9hZGRlZCwgZGF0ZV90el8xLCBkYXRlX3R6XzIpCmBgYAoKCgoKCg==